package com.jh.rq;

import com.sun.javafx.collections.MappingChange;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author Li
 * @Date 2023/4/20 9:12
 */
public class MyMap {
    /**
     * Map集合特点：
     * 双列集合，一个键对应一个值
     * 键不可以重复，值可以重复
     *
     * V put(K key,V value)	添加元素
     * V remove(Object key)	根据键删除键值对元素
     * void clear()	移除所有的键值对元素
     * boolean containsKey(Object key)	判断集合是否包含指定的键
     * boolean containsValue(Object value)	判断集合是否包含指定的值
     * boolean isEmpty()	判断集合是否为空
     * int size()	集合的长度，也就是集合中键值对的个数
     *
     *
     * V  getValue()	获得值
     * K  getKey()	获得键
     * Set<Map.Entry<K,V>> entrySet()	获取所有键值对对象的集合
     */
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("哈哈1","呵呵1");
        map.put("哈哈2","呵呵2");
        map.put("哈哈3","呵呵3");
        map.put("哈哈4","呵呵4");
//        System.out.println(map);
        Set<String> KeySet = map.keySet();//取出键
        System.out.println(KeySet);
        Collection<String> value = map.values();//取值
        System.out.println(value);
//        Set<Map.Entry<String,String>> entries = map.entrySet();//取键值对对象
//        System.out.println(entries);

        /**
         * 遍历方式一，先获得key，在获得对应的value
         */
        Set<String> keySet = map.keySet();
        for (String key: keySet
             ) {
            System.out.println(key+"---"+map.get(key));
        }
        /**
         * 遍历方式二，整体获得
         */
        System.out.println("------------");
        Set<Map.Entry<String,String>> entries = map.entrySet();
        for (Map.Entry<String,String> entry: entries
             ) {
            System.out.println(entry.getKey()+"---"+entry.getValue());
        }
        System.out.println("-----------");
      //匿内部类
//  map.forEach(new BiConsumer<String, String>() {
//      @Override
//      public void accept(String s, String s2) {
//          System.out.println(s+"-----"+s2);
//      }
//  });


// Lambda 表达式
        map.forEach((s,s2)-> System.out.println(s+"---"+s2));
    }
}
